package com.heima.user.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.heima.common.constants.UserConstants;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.user.dtos.AuthDto;
import com.heima.model.user.pojos.ApUserRealname;
import com.heima.user.mapper.ApUserRealnameMapper;
import com.heima.user.service.ApUserRealnameService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 * APP实名认证信息表 服务实现类
 * </p>
 *
 * @author itheima
 */
@Slf4j
@Service
@Transactional
public class ApUserRealnameServiceImpl extends ServiceImpl<ApUserRealnameMapper, ApUserRealname> implements ApUserRealnameService {
    /**
     * 根据数据查询分页数据 返回admin服务器
     * @param authDto
     * @return
     */
    @Autowired
    private ApUserRealnameService apUserRealnameService;

    /**
     * 用户审核分页查询数据
     * @param authDto
     * @return
     */
    @Override
    public ResponseResult list(AuthDto authDto) {
        //参数校验
     authDto.checkParam();
     //查询所有数据
        //分页
        IPage page = new Page(authDto.getPage(),authDto.getSize());

        LambdaQueryWrapper<ApUserRealname> wrapper = new LambdaQueryWrapper<>();
        if (authDto.getStatus()!=null){
            wrapper.eq(ApUserRealname::getStatus,authDto.getStatus());
        }
        wrapper.orderByDesc(ApUserRealname::getUpdatedTime);
        //获取分页数据
        page(page,wrapper);

        ResponseResult result = new PageResponseResult(authDto.getPage(),authDto.getSize(),(int)page.getTotal());
        result.setData(page.getRecords());
        //查询所有数据
     //   List<ApUserRealname> list = apUserRealnameService.list();


        return result;
    }

    @Override
    public ResponseResult ApuserByidRealname(AuthDto authDto) {
        //校验
     //   authDto.checkParam();
       //拿到id,去根据id修改数据信息
        // Integer id = authDto.getId();
        //拿到失败的原因
      //  String msg = authDto.getMsg();
        //去修改数据库的信息
        LambdaQueryWrapper<ApUserRealname> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ApUserRealname::getId,authDto.getId());
        ApUserRealname apUserRealname = getOne(queryWrapper);
        //将修改后的信息返回
        //修改状态和失败原因
        //判断是不是为空 根据id得到的数据
        if (apUserRealname!=null){
            apUserRealname.setStatus(UserConstants.FAIL);  //将pojo的noolean改成了int
            apUserRealname.setReason(authDto.getMsg());
            updateById(apUserRealname);
            return ResponseResult.okResult(apUserRealname);
        }

        return ResponseResult.okResult("数据是空的");
    }

    /**
     * 审核通过将状态修改为9 ，并且创建需要开通**自媒体账号**（该账号的用户名和密码与app一致）
     * @param authDto
     * @return
     */
    @Override
    public ResponseResult authPass(AuthDto authDto) {
         //根据id去修改信息
        //根据id拿到pojo
        LambdaQueryWrapper<ApUserRealname> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(ApUserRealname::getId,authDto.getId());
        ApUserRealname apUserRealname = getOne(queryWrapper);
        //将修改后的信息返回
        //修改状态和失败原因
        //判断是不是为空 根据id得到的数据
        if (apUserRealname!=null){
            apUserRealname.setStatus(UserConstants.SUCCESS);  //将pojo的noolean改成了int
            updateById(apUserRealname);
            return ResponseResult.okResult(apUserRealname);
        }

        return ResponseResult.okResult("数据是空的");
    }
}
